# 使用Web框架
# https://www.liaoxuefeng.com/wiki/1016959663602400/1017806472608512
# 比较流行的Web框架——Flask
# 常见的Python Web框架还有：
# Django：全能型Web框架；
# web.py：一个小巧的Web框架；
# Bottle：和Flask类似的Web框架；
# Tornado：Facebook的开源异步Web框架。

# 用Flask编写Web App比WSGI接口简单（这不是废话么，要是比WSGI还复杂，用框架干嘛？），我们先用pip安装Flask：$ pip install flask
# 然后写一个app.py，处理3个URL，分别是：
# GET /：首页，返回Home；
# GET /signin：登录页，显示登录表单；
# POST /signin：处理登录表单，显示登录结果。
# 注意噢，同一个URL/signin分别有GET和POST两种请求，映射到两个处理函数中。

# Flask通过Python的装饰器在内部自动地把URL和函数给关联起来，所以，我们写出来的代码就像这样：
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

from flask import Flask
from flask import request

app = Flask(__name__)


@app.route('/', methods=['GET', 'POST'])
def home():
    return '<h1>Home</h1>'


@app.route('/signin', methods=['GET'])
def signin_form():
    return '''<form action="/signin" method="post">
              <p><input name="username"></p>
              <p><input name="password" type="password"></p>
              <p><button type="submit">Sign In</button></p>
              </form>'''


@app.route('/signin', methods=['POST'])
def signin():
    # 需要从request对象读取表单内容：
    if request.form['username'] == 'admin' and request.form['password'] == 'password':
        return '<h3>Hello, admin!</h3>'
    return '<h3>Bad username or password.</h3>'


if __name__ == '__main__':
    app.run()

'''
    运行python demo4.py，Flask自带的Server在端口5000上监听：

    $ python demo4.py 
    * Running on http://127.0.0.1:5000/
    打开浏览器，输入首页地址http://localhost:5000/：
    首页显示正确！

    再在浏览器地址栏输入http://localhost:5000/signin，会显示登录表单：
    输入预设的用户名admin和口令password，登录成功：
    输入其他错误的用户名和口令，登录失败：
'''